import { PrefixUrl } from '@/services/aifarm/Common';
import { request } from '@umijs/max';
import { convertToOptions, convertToValueEnum } from '@/services/aifarm/Common';
/**
 * 定义常用的6个固定函数的接口。
 */

const moduleUrl = PrefixUrl + '/landHarvest/';
const SelectManyByPageUrl = moduleUrl + 'selectManyByPage';
const SelectManyUrl = moduleUrl + 'selectMany';
const SelectByIdUrl = moduleUrl + 'selectById';
const InsertOrUpdateUrl = moduleUrl + 'insertOrUpdate';
const DeleteByIdUrl = moduleUrl + 'deleteById';

/**
 * 定义用到的数据类型，例如特殊的查询字段与返回字段
 */

// 定义[作业方式]类型，为了下拉框
export const operationModes = [
  {
    value: 0,
    label: '人工',
  },
  {
    value: 1,
    label: '机械',
  },
];
// List页面用到
export const getOperationModesEnum=() => convertToValueEnum(operationModes);
// Edit页面用到
export const getOperationModesOptions=() => convertToOptions(operationModes);

// 自定义的查询参数，可以根据自己的需求扩展
export type selectManyParams = {
  [property: string]: any; //这个属性保证任何数据传入都不会报错
};

/**
 * 分页查询 地块上针对某个作物的采收记录
 * @param params : 如果是分页就添加上Farm.SelectByPageParams
 */
export async function selectManyByPageForLandHarvest(params: selectManyParams & Farm.SelectByPageParams) {
  return request<Farm.ResponseInfo<Farm.ResponseListData<Farm.LandHarvest>>>(SelectManyByPageUrl, {
    method: 'GET',
    params,
  });
}

/**
 * 查询所有 地块上针对某个作物的采收记录
 */
export async function selectManyForLandHarvest() {
  return request<Farm.ResponseInfo<Farm.ResponseListData<Farm.LandHarvest>>>(SelectManyUrl, {
    method: 'GET',
  });
}

/**
 * 根据ID查询 地块上针对某个作物的采收记录
 */
export async function selectByIdForLandHarvest(landHarvestId: number) {
  return request<Farm.ResponseInfo<Farm.LandHarvest>>(SelectByIdUrl, {
    method: 'GET',
    params: {
      landHarvestId,
    },
  });
}

/**
 * 保存或更新 地块上针对某个作物的采收记录
 * @param data Partial 会为每个属性添加可选性
 * @returns number： 返回主键
 */
export async function insertOrUpdateForLandHarvest(data: Partial<Farm.LandHarvest>) {
  return request<Farm.ResponseInfo<number>>(InsertOrUpdateUrl, {
    method: 'POST',
    data,
  });
}

/**
 * 删除 地块上针对某个作物的采收记录
 * @returns number： 1 代表更系了1条数据库 ; 0 代表没有更新数据库
 */
export async function deleteByIdForLandHarvest(landHarvestId: number) {
  return request<Farm.ResponseInfo<number>>(DeleteByIdUrl, {
    method: 'GET',
    params: {
      landHarvestId,
    },
  });
}


